var  express = require("express");
var router = express.Router();
var {getdb} = require("../utils/db");
var {Users,Movies,Todos,Pro_user,Uid,Pro_tech,School,Banji,Project,Proxm} = require("../utils/model")
var {createToken,getMobile} = require("../utils/token");

router.get("/test",(req,res)=>{
    res.json({
        code:200,
        msg:"vue路由模块的测试接口...",
        result:null
    })
});

router.get("/findusers",(req,res)=>{
    getdb(res,(db)=>{
        db.collection("users").find({},{},(err,result)=>{
          
            res.json({
                code:200,
                msg:"获取用户成功",
                // result:JSON.stringify(result)
            })
        })

        // db.collection('users').find({},{})
        // .then(result=>{
        //     res.json({
        //         code:200,
        //         msg:"获取用户成功",
        //         result
        //     })
        // })
    })
})

// 增删改查 
router.get("/getusers",(req,res)=>{
    Users.find({},{})
    .then(result=>{
        res.json({
            code:200,
            msg:"获取用户列表成功",
            result
        })
    })
})

router.get("/delusers",(req,res)=>{
   
    Users.remove({
        _id:req.query._id
    }).then(result=>{
        res.json({
            code:200,
            msg:"用户删除成功",
            result
        })
    })
})

router.post("/addusers",(req,res)=>{
    var body = req.body;
    Users.insertMany(body).then(result=>{
        res.json({
            code:200,
            msg:"用户新增成功",
            result
        })
    }).catch(err=>{
        res.json({
            msg:"数据库错误",
            code:500
        })
    })
})

router.post('/updateusers',(req,res)=>{
    
    Users.updateMany({
        _id:req.body._id
    },{
        $set:{
            name:req.body.name
        }
    }).then(result=>{
        res.json({
            code:200,
            msg:"修改成功",
            result
        })
    })
})


// 查询
router.get("/findmovie",(req,res)=>{
    var limit =  req.query.limit * 1 || 0 ;
    Movies.find({},{}).limit(limit)
    .sort({_id:-1})
    .then(result=>{
        res.json({
            msg:"查询电影数据成功",
            code:200,
            result
        })
    })
    .catch(err=>{

    })
})


// 查询
router.post("/findtodos",(req,res)=>{
    Todos.find({},{}).sort({_id:-1})
    .then(result=>{
        res.json({
            msg:"获取留言成功",
            code:200,
            result
        })
    })
    .catch(err=>{

    })
})

router.post("/addtodos",(req,res)=>{
    var body = req.body;
    body.time = new Date();
    Todos.insertMany(body).then(data=>{
        Todos.find({},{}).sort({_id:-1})
        .then(result=>{
            res.json({
                msg:"留言新增成功",
                code:200,
                result
            })
        })
    })
})


router.get("/deltodos",(req,res)=>{
 
    Todos.remove({
        _id:req.query._id
    }).then(result=>{
        res.json({
            code:200,
            msg:"留言删除成功",
            result
        })
    })
})

router.get("/getonetodo",(req,res)=>{
    Todos.findOne({
        _id:req.query._id
    }).then(result=>{
        res.json({
            code:200,
            msg:"当前留言获取成功",
            result
        })
    })
})

router.post('/updatetodo',(req,res)=>{
   
    var body = req.body;
    Todos.updateMany({
        _id:req.body._id
    },{
        $set:{
            title:body.title,
            content:body.content,
            time:new Date()
        }
    }).then(result=>{
        res.json({
            code:200,
            msg:"修改成功",
            result
        })
    })
})



router.post("/register",(req,res)=>{
    var body = req.body;
  

    Pro_user.findOne({
        mobile:body.mobile
    }).then(data=>{
        if(data){
            res.json({
                msg:"注册失败-手机号已经被注册",
                code:200,
                type:0,
                result:data
            })
        }else{
            // 注册 
            Uid.findOneAndUpdate({
                tablename:"pro_users"
            },{
                $inc:{
                    id:1
                }
            },{
                new:true, // 返回更新之后的数据 
            }).then(obj=>{
               
                // res.json({msg:"200"})
                body.sid = obj.id; 
                Pro_user.insertMany(body)
                .then(result=>{
                    res.json({
                        msg:"注册成功",
                        code:200,
                        result,
                        type:1
                    })
                })
                .catch(err=>{
                    res.json({
                        msg:"数据库异常",
                        code:500,
                        type:0
                    })
                })
            })
        }
    })
})


// 登录
// type  学生  1  教师 2
router.post("/login",(req,res)=>{
    var body = req.body;
    var type = body.type;
   
    var table = type == "1" ? Pro_user : Pro_tech; // 判断你是什么用户登录
   
    table.findOne({
        mobile:body.mobile 
    }).then(result=>{
       
        if(result){
            if(result.password===body.password){
                var token = createToken(body.mobile);
                res.json({
                    msg:`登录成功 ${type=='1'?'学生身份':'教师身份'}`,
                    code:200,
                    type:1,
                    result,
                    token,
                    rollType:type  // 身份 
                }) 
            }else{
                res.json({
                    msg:"登录失败,手机号和密码不匹配",
                    code:200,
                    type:0
                }) 
            }
        }else{
            res.json({
                msg:"登录失败",
                code:200,
                type:0
            })
        }
    })
})

// 获取个人信息
router.post("/getinfo",(req,res)=>{
    getMobile(req,res,mobile=>{
      
        var type = req.body.rolltype;  
        var table = type == "1" ? Pro_user : Pro_tech;
        table.findOne({
            mobile
        }).then(result=>{
          
           if(result){
                res.json({
                    code:200,
                    msg:"获取个人信息成功",
                    rollType:type,
                    type:1,
                    result
                });
           }else{
                res.json({
                    code:200,
                    msg:"获取个人信息失败",
                    type:0,
                })
           }
        }).catch(err=>{
            res.json({
                code:200,
                msg:"获取个人信息失败",
                type:0,
            })
        })
        
    })
})


// 获取校区
router.get("/getschools",(req,res)=>{
    getMobile(req,res,mobile=>{
        School.find({},{})
        .then(result=>{
            res.json({
                code:200,
                msg:"获取校区成功",
                result:result
            })
        })
    })
})

// 添加班级
router.post("/addbanji",(req,res)=>{
    var body = req.body;
    getMobile(req,res,mobile=>{
        School.findOne({
            value:body.city
        }).then(obj=>{
            var banjiCode = body.city + body.xueke+body.num;
            var banjiText = obj.city + body.xueke + "-" +body.num;
            Banji.findOne({
                code:banjiCode
            }).then(data=>{
                if(data){
                    res.json({
                        code:200,
                        type:0,
                        msg:"班级已经插入,无需再次操作"
                    })
                }else{
                    Banji.insertMany({
                        num:body.num,
                        code:banjiCode,
                        text:banjiText,
                        xueke: body.xueke
                    }).then(result=>{
                        res.json({
                            code:200,
                            type:1,
                            msg:"班级插入成功"
                        })
                    })
                }
            })
        })
    })
})

// 查询班级列表
router.get("/getbanji",(req,res)=>{
    var obj = {};
    var xueke = req.query.xueke;
    if(xueke){
        obj.xueke = xueke;
    }
  
    getMobile(req,res,mobile=>{
        Banji.find(obj,{})
        .sort({num:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"获取班级成功",
                result
            })
        })
    })
})

//添加项目类别 
router.post("/addproject",(req,res)=>{
    var body = req.body;
    getMobile(req,res,mobile=>{
        Project.findOne({
            value:body.value
        }).then(data=>{
            if(data){
                res.json({
                    code:200,
                    type:0,
                    msg:"项目名称已经存在"
                })
            }else{
                Project.insertMany(body)
                .then(result=>{
                    res.json({
                        code:200,
                        type:1,
                        msg:"项目名称添加成功",
                        result
                    })
                })
            }
        })
    })
})


router.get("/getproject",(req,res)=>{
    getMobile(req,res,mobile=>{
        Project.find({},{})
        .then(result=>{
            res.json({
                code:200,
                type:1,
                msg:"项目名称获取成功",
                result
            })
        })
    })
})

router.get("/delproject",(req,res)=>{
    getMobile(req,res,mobile=>{
        Project.remove({
            _id:req.query._id
        }).then(result=>{
            res.json({
                code:200,
                msg:"项目名称删除成功",
                result
            })
        })
    })
})


// 修改个人信息  
router.post("/changeinfo",(req,res)=>{
    var body = req.body;
    var rollType = body.rollType;
    var table = rollType == "1" ? Pro_user : Pro_tech;

    var _id = body._id;
     
    delete body['_id'];   // 对象删除 

   
    getMobile(req,res,mobile=>{
        table.updateMany({
            _id
        },{
            $set:body
        }).then(result=>{
            res.json({
                code:200,
                type:1,
                msg:"个人信息修改成功",
                result
            })
        })
    })
})


// 添加项目 
router.post("/addproxm",(req,res)=>{
    getMobile(req,res,mobile=>{
        // 查询这个人的信息  
        var body = req.body;
        Uid.findOneAndUpdate({
            tablename:"proxm"
        },{
            $inc:{
                id:1
            }
        },{
            new:true, // 返回更新之后的数据 
        }).then(data=>{
            body.pid = data.id;
            body.time = new Date();
            Proxm.insertMany(body)
            .then(result=>{
                res.json({
                    code:200,
                    msg:"项目插入成功",
                    type:1,
                    result
                })
            })
        })
    })
})

// 查询项目
router.get("/findproxm",(req,res)=>{
    getMobile(req,res,mobile=>{
     
         Proxm.find({
             pmobile:mobile
         }).then(result=>{
             res.json({
                 code:200,
                 type:1,
                 msg:"我的项目查询成功",
                 result
             })
         })
    })
})

// 删除
router.post("/delproxm",(req,res)=>{
    getMobile(req,res,mobile=>{
         Proxm.remove({
             pid:req.body.pid
         }).then(result=>{
             res.json({
                 code:200,
                 type:1,
                 msg:"我的项目删除成功",
                 result
             })
         })
    })
})

// 修改我的项目
router.post("/updateproxm",(req,res)=>{
    getMobile(req,res,mobile=>{
        var body = req.body;
        Proxm.updateMany({
            pid:body.pid,
        },{
            $set:body
        })
        .then(result=>{
            res.json({
                code:200,
                type:1,
                msg:"项目修改成功",
                result
            })
        })
    })
})



router.post("/getproxmulist",(req,res)=>{
    getMobile(req,res,mobile=>{
        var body = req.body;
        var obj = {} // 查询条件
        if(body.banji){
            obj.pbanjicode = body.banji
        }
        
        if(body.procode){
            obj.procode = body.procode
        }
        if(body.keyword){
            obj.pname =  new RegExp(body.keyword);
        }
        console.log(obj)
        Proxm.find(obj)
        .sort({pid:-1})
        .then(result=>{
            console.log(result)
            res.json({
                code:200,
                msg:"获取当前项目列表成功",
                result,
                type:1
            })
        })
    })
})
router.post("/changescore",(req,res)=>{
    getMobile(req,res,mobile=>{
        Proxm.updateMany({
            pid:req.body.pid,
        },{
            $set:{
                pscore:req.body.score
            }
        })
        .then(result=>{
            res.json({
                code:200,
                type:1,
                msg:'分数修改成功',
                result
            })
        })
        .catch(err=>{
            res.json({
                code:200,
                type:0,
                msg:"服务器异常"
            })
        })
    })
})
module.exports = router;


